這兩天會製作ECS與藍綠部署用的CodeDeploy,
原本是打算使用AWS的介面操作,但發現已經大改版,藍綠部署的建置會有點怪,
所以今天會改為以AWS CLI來進行。
所幸昨天有在本地設定AWS CLI用的組態,可以直接使用。
在開始之前,要請各位再多建一組TargetGroup,
原因是藍綠部署要有兩組TargetGroup。
為什麼現在才說要做呢,因為原本是規劃用AWS介面操作說明,但現在用CLI就只能開始就請大家做了,詳細作法請回顧先前的文章
接下來會有以下三個步驟
首先自己的電腦開一個新的資料夾,這個資料夾會存放幾個json檔案,提供AWS CLI使用。
接著在該資料夾呼叫CMD介面。
使用以下命令建置ECS叢集(Cluster)
aws ecs create-cluster --cluster-name {Name} --region {Region}
{Name}替換為你要的名稱
{Region}替換為你所在的區域
接著回到資料夾建造一個副檔名為ECSDemoService.json的json檔案,
內容如下:
{
"cluster": "{ClusterName}",
"serviceName": "{ServiceName}",
"taskDefinition": "{TaskDefinitionName}",
"loadBalancers": [
{
"targetGroupArn": "{TargetGroup Arn}",
"containerName": "{Container Name}",
"containerPort": 80
}
],
"launchType": "FARGATE",
"schedulingStrategy": "REPLICA",
"deploymentController": {
"type": "CODE_DEPLOY"
},
"platformVersion": "LATEST",
"networkConfiguration": {
"awsvpcConfiguration": {
"assignPublicIp": "ENABLED",
"securityGroups": [ "{SercurityGroup ID}" ],
"subnets": [ "{Subnet ID}", "{Subnet ID}" ]
}
},
"desiredCount": 1
}
{ClusterName}請環城你剛剛建造的Cluster 名稱
{ServiceName}請換成你想要的ECS Service名稱
{TargetGroup Arn}請換成你先前建造的Arn (請使用有綁定Load balancer的)
{Container Name}請換成你先前建造的名稱 (可以在Task Definition看到)
{SercurityGroup ID}請換成你先前建造SercurityGroup時產生的ID (請在VPC資源中的SercurityGroup查詢)
{Subnet ID}請換成你先前建造Subnet時產生的ID(請在VPC資源中的Subnet查詢)
接著使用以下命令建出ECS Service
aws ecs create-service --cli-input-json file://{ECSDemoService.json} --region {Region}
{ECSDemoService.json}是剛才建立的JSON,請換成你的檔名。
{Region}替換為你所在的區域
接著我們到ECS的頁面,會看到已經有建好一個Custer,
裡面還有一個Service。
但為了節省費用,我們先點選更新服務
找到所需任務,將數量調為0,並更新。